<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /**
     * Map 数据结构类似于对象，是键值对的集合，传统的键只能用字符串，Map 的键不限于字符串，各种类型的值（包括对象）都可以当作键。
     属性和操作方法
     size 属性，返回 Map 结构的成员总数
     set(key,value)方法，设置set方法设置键名key对应的键值为value，然后返回整个 Map 结构。如果key已经有值，则键值会被更新，否则就新生成该
     get(key) 方法，读取key对应的键值，如果找不到key，返回undefined
     has(key) 方法，返回一个布尔值，表示某个键是否在当前 Map 对象之中。
     delete(key) 方法，删除某个键，返回true。如果删除失败，返回false。
     clear(key) 方法，清除所有成员，没有返回值。
     Map 遍历
     keys()  返回键名的遍历器
     values() 返回键值的遍历器
     entries()返回所有成员的遍历器
     forEach()遍历Map的所有成员

     */
    //Set  使用键
    const obj = new Set;
    //添加 添加一样的  不会有变化
    obj.add(1);
    obj.add(2);
    obj.add(5);
    obj.add(4);
    // size 属性，返回 Map 结构的成员总数
    obj.size;
    // //has(key) 方法，返回一个布尔值，表示某个键是否在当前 Map 对象之中。
    // obj.has(2);
    // //delete(key) 方法，删除某个键，返回true。如果删除失败，返回false。
    // obj.delete(2);
    // //keys()  返回键名的遍历器
    // obj.keys();
    // //values() 返回键值的遍历器
    // obj.values();
    // // entries()返回所有成员的遍历器
    // obj.entries();
    // // forEach()遍历Map的所有成员
    // obj.forEach();
    // //clear(key) 方法，清除所有成员，没有返回值。
    // obj.clear();
    // console.log(obj);

    //Map 使用键值对
    const ar = new Map;
    //是set添加 设置同一个键名 会覆盖上一个键名
    ar.set('a',3);
    ar.set('c','545a');
    ar.set('c','asdsad5454');
    //获取值
    ar.get('c');
    //获取没有的值 得到undefined
    ar.get('casdsa');//undefined
    // //has(key) 方法，返回一个布尔值，表示某个键是否在当前 Map 对象之中。
    // ar.has(2);
    // //delete(key) 方法，删除某个键，返回true。如果删除失败，返回false。
    // ar.delete(2);
    // //keys()  返回键名的遍历器
    // ar.keys();
    // //values() 返回键值的遍历器
    // ar.values();
    // // entries()返回所有成员的遍历器
    // ar.entries();
    // // forEach()遍历Map的所有成员
    // ar.forEach();
    // //clear(key) 方法，清除所有成员，没有返回值。
    // ar.clear();
    console.log(ar);
</script>

</body>
</html>